草庐IT

c++ - 池化线程的 SetThreadAffinityMask

全部标签

windows - 线程如何在 Windows 上的多个处理器上执行?

我使用的是Windows(Windows7、XP和Vista)。如果我创建一个多线程程序,线程是否会在所有可用内核上执行?是自动的吗?有保证吗?例如,如果我有四个线程和四个处理器,是否会在每个处理器/核心上执行一个线程? 最佳答案 操作系统会根据线程状态、优先级等来决定不能保证线程都将在不同的处理器上运行。事实上,在线程执行顺序方面几乎没有保证。它们可能都运行在同一个处理器上。它们可能全部并行运行,也可能根本不运行。并不是说这很可能,但您没有任何保证。 关于windows-线程如何在Wi

c - 适用于 x86_64 的 Windows 的免费编译器

我正在编写一个编译器,它使用C作为中间代码(当前)传递给MinGW以编译成EXE文件。我正在寻找可以包含在我的版本中的x64编译器,以便我的应用程序的用户可以绕过Win64的“WindowsonWindows”系统来访问native资源。MinGW允许我分发编译器,但它似乎不支持生成64位二进制文​​件。提前致谢:)比利3 最佳答案 看起来这可能是您想要的:Themingw-w64projectisacompleteruntimeenvironmentforgcctosupportbinariesnativetoWindows64-

c++ - windows平台下c++休眠线程100.8564毫秒

我有什么方法可以让线程在windowOS下休眠到100.8564毫秒。我正在使用多媒体计时器,但它的分辨率至少为1秒。请指导我,以便我可以处理毫秒的小数部分。 最佳答案 是的,你可以做到。请参阅QueryPerformanceCounter()以读取准确的时间,并进行繁忙的循环。这将使您能够以高达10纳秒的分辨率进行等待,但是,如果线程调度程序决定在周期结束时从您那里窃取控制权,它会这样做,除了分配您的处理实时优先级。你也可以看看这个:http://msdn.microsoft.com/en-us/library/ms838340(

c++ - 创建窗口和线程 - C++

当使用CreateEx创建一个新窗口时,它的代码是在它自己的线程中执行还是在它的父线程中执行(即在其中执行其实例化代码的线程)?谢谢。 最佳答案 窗口本身并不实际运行任何代码,所有代码都是从消息循环中调用的,它是您自己代码的一部分。尝试使用多线程与WindowsUI交互时可能会遇到大问题,因此您应该始终在单个线程中响应消息。 关于c++-创建窗口和线程-C++,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.

c - 在 Windows XP 中手动更新 shell32.dll 是否安全/实用?

我正在运行我的开发环境WindowsXP。我需要访问函数SHGetKnownFolderPath。我的团队建议我用他们的更新我的shell32.dll并更新我的头文件。函数记录在这里:http://msdn.microsoft.com/en-us/library/bb762188%28v=vs.85%29.aspx现在,了解这个问题的重点是通过复制粘贴手动覆盖/更新shell32.dll的可行性。请不要以上述功能的解决方法/替代方案作为回应。这不是这个问题的重点。简单地使用Windows7版本的shell32.dll并粘贴到我的(在XP中)是否安全?我不敢测试它,因为害怕毁了我的整个操

c - 减法运算不起作用

#include#includeintmain(){charletter;floatn1,n2,sum;printf("Whatoperationdoyouwanttouse\n\nA)Addidtion\nB)Subtraction\nC)Multiplacation\nD)Division\n");scanf("%c",&letter);printf("Pleaseenteranumber:");scanf("%f",&n1);printf("Pleaseenterasecondnumber:");scanf("%f",&n2);if(letter=='A'||'a'){sum=n

c - 在 C 中打开应用程序

有没有一种方法可以通过C中的简单命令打开应用程序?这是我当前的代码:intmain(){charinput;printf("Hello!HowmayIhelpyou?\n");scanf("%s",input);if(input=="OpenGoogleChrome"||"opengooglechrome"||"openchrome"||"rungooglechrome"||"runchrome"||"RunGoogleChrome"||"RunChrome"||"OpenChrome"){printf("Sure!OpeningGoogleChrome...");system("C:

c - Windows系统编程

大家好,我是Windows系统编程的新手,有兴趣完全使用C和win32api进行编程。你能给我一些建议,告诉我如何开始以及有什么好书可以读吗?提前致谢。 最佳答案 ProgrammingWindows,第5版,CharlesPetzold会有所帮助 关于c-Windows系统编程,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2688474/

c - 为什么编译器创建一个变量 "twice"?

我知道这是一个更“沉重”的问题,但我认为它也很有趣。它是ofmypreviousquestionsaboutcompilerfunctions的一部分,但回过头来我解释得非常糟糕,许多人只回答了我的第一个问题,所以它是:因此,如果我的知识是正确的,现代Windows系统使用分页作为切换任务并确保每个任务在内存中都有适当位置的方式。所以,每个进程都有自己的位置,从0开始。当多任务生效时,内核必须将所有重要的寄存器保存到任务的堆栈中,我相信这比保存当前堆栈指针、更改页面条目以切换到另一个进程的物理地址空间、加载新进程堆栈指针,弹出保存的寄存器并通过调用弹出的指令指针地址继续。由于这个很好的

c++ - 数组参数的完整性检查(strlen 等)

无法通过搜索找到答案(可能是错误的关键字),所以我正在创建一个新问题。您如何处理带有字符串参数的dll导出方法的参数检查。一般规则是永远不会信任用户,但实际上呢?例如:intfoo(constchar*bar){if(!bar)returnFAIL;???}假设库的用户像这样调用我们的函数:foo(reinterpret_cast(0x00000008));这应该首先导致AV:strlen(bar);有没有办法防止这种情况发生?处理错误的正确方法?我知道IsBadReadPtr是不可能的,因为这个函数属于危险类,永远不能使用。但是,有什么办法可以解决这个问题吗?我不能__declpec